package hello;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * 生产者类
 * 向消息队列发送消息
 */

public class Producer {

    public static final String QUEUE_NAME = "hello";

    public static void main(String[] args) throws IOException, TimeoutException {

        //创建一个连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        //配置RabbitMQ连接的参数
        factory.setHost("59.110.164.26");
        factory.setUsername("gejingyu");
        factory.setPassword("g19991227");

        //创建与RabbitMQ的连接
        Connection connection = factory.newConnection();
        //获取信道
        Channel channel = connection.createChannel();
        /**
         * 生成一个队列
         * queueDeclare接收五个参数
         * 1. String  queue                 队列名称
         * 2. boolean durable               队列是否进行持久化，即服务重启后队列是否存在
         * 3. boolean exclusive             队列是否声明为独占队列，即是否只有当前连接可以使用该队列
         * 4. boolean autoDelete            队列是否自动删除，即服务器不再使用此队列时是否自动删除
         * 5. Map<String, Object> arguments 队列的其他参数
         */
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);

        String message = "Hello World";
        /**
         * 发送消息
         * basicPublish接收四个参数
         * 1. String exchange       指定要发送到的交换机
         * 2. String routingKey     路由key
         * 3. BasicProperties props 其他参数
         * 4. byte[] body           消息体
         */
        channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
        System.out.println("消息发送成功");
    }
}
